class Solution {
public:
    int longestOnes(vector<int>& nums, int k) {
        int left = 0;
        int right = 0;
        int count = 0;
        int n = nums.size();
        int res = 0;

        while (right < n)
        {
            if (nums[right] == 0)
            {
                count++;
            }
            right++;

            while (count > k)
            {
                if (nums[left] == 0)
                {
                    count--;
                }
                left++;
            }

            res = max(right - left, res);
        }

        return res;
    }
};